# 函数 函数定义要在调用之前
def login():
    print("登录函数")
    print("*******")


login()
login()


def say_hello():
    print("hello lisi")


say_hello()


def buy():
    return "一桶水果茶", 20
    # return


print(buy())


def add(a, b):
    return a + b


print(add(1, 2))


# 位置参数
def funa(name, age, sex):
    print(name)
    print(age)
    print(sex)


funa('zhangsan', 18, '男')


# 默认参数 所有位置参数必须在默认参数前
def funb(b, a=8):
    print("a>>", a)
    print("b>>", b)


funb(1)
funb(200, 3)


# 可变参数 以元组接收
def func(*args):
    print(args, type(args))


func()
func(1)
func(1, 2)


# 关键字参数 以字典接收
def fund(**kwargs):
    print(kwargs, type(kwargs))


fund()
# 传值以键值传入
fund(name='zhangsan', age=26)


# 函数嵌套
def study():
    print("晚上在学习")


# 嵌套调用
def couse():
    study()
    print("python基础")


# study()
couse()


# 嵌套定义
def study2():
    print("晚上在学习2")

    def course2():
        print("python基础2")

    course2()


study2()
